Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@skyra/gifenc

Package Overview
Dependencies
Maintainers
2
Versions
54
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@skyra/gifenc

A very fast server-side animated GIF generation for Node.js

  • 1.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
15K
decreased by-8.73%
Maintainers
2
Weekly downloads
 
Created
Source

@skyra/gifenc

A very fast server-side animated GIF generation for Node.js

GitHub

npm npm bundle size minified (scoped) npm bundle size minzipped (scoped)

Support Server


Features

Installation

You can use the following command to install this package, or replace npm install with your package manager of choice.

npm install @skyra/gifenc

Usage

@skyra/gifenc is very close to a drop-in replacement for gifencoder. There are only 2 differences to account for. First of all, the encoder class is named GifEncoder and not GIFEncoder, and secondly, the metadata methods are chainable.

Streaming API - Writing to a file

const { GifEncoder } = require('@skyra/gifenc');
const { createWriteStream } = require('node:fs');

const encoder = new GifEncoder(400, 400);
	// Set the repeat mode: 0 for repeat, -1 for no-repeat:
	.setRepeat(0)
	// Set the frame delay in milliseconds:
	.setDelay(500)
	// Set the image quality, 10 is default:
	.setQuality(10);

// Create a read stream and pipe it into a file write stream:
encoder.createReadStream()
	.pipe(createWriteStream('my-file.gif'));

encoder.start();

// `getFrames` enumerates over frames
for (const frame of getFrames()) {
	encoder.addFrame(frame);
}

encoder.finish();

Streaming API - Get resulting Buffer

We can use streamConsumers.buffer() from Node.js to convert the stream into a buffer starting with Node.js v16.7.0, if you're using an older version, consider making a function using stream's async iterator (Node.js v10+) or use a package.

const { GifEncoder } = require('@skyra/gifenc');
const { buffer } = require('node:stream/consumers');

const encoder = new GifEncoder(400, 400);

const stream = encoder.createReadStream();
encoder.setRepeat(0).setDelay(500).setQuality(10).start();

// `getFrames` enumerates over frames
for (const frame of getFrames()) {
	encoder.addFrame(frame);
}

encoder.finish();
const result = await buffer(stream);

Using with canvas-constructor

const { GifEncoder } = require('@skyra/gifenc');
const { Canvas } = require('canvas-constructor/skia');
// const { Canvas } = require('canvas-constructor/cairo');

const canvas = new Canvas(400, 400);
const encoder = new GifEncoder(400, 400);

const stream = encoder.createReadStream();
encoder.setRepeat(0).setDelay(500).setQuality(10).start();

const colors = ['#98DDCA', '#D5ECC2', '#FFD3B4', '#FFAAA7'];
for (const color of colors) {
	canvas.setColor(color).printRectangle(0, 0, 400, 400);
	encoder.addFrame(canvas);
}

// ...

Using with ECMAScript Modules

@skyra/gifenc supports ESM out of the box. To import the GifEncoder class, you use the following statement:

import { GifEncoder } from '@skyra/gifenc';

Buy us some doughnuts

Skyra Project is open source and always will be, even if we don't get donations. That said, we know there are amazing people who may still want to donate just to show their appreciation. Thanks you very much in advance!

We accept donations through Patreon, BitCoin, Ethereum, and Litecoin. You can use the buttons below to donate through your method of choice.

Donate WithQRAddress
PatreonPatreonImageClick Here
PayPalPayPalImageClick Here
BitCoinBitcoinImage3JNzCHMTFtxYFWBnVtDM9Tt34zFbKvdwco
EthereumEthereumImage0xcB5EDB76Bc9E389514F905D9680589004C00190c
LitecoinLitecoinImageMNVT1keYGMfGp7vWmcYjCS8ntU8LNvjnqM

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Antonio Román

💻 🤔 🚇

Jeroen Claassens

🚇 🚧

This project follows the all-contributors specification. Contributions of any kind welcome!

Keywords

FAQs

Package last updated on 29 Oct 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc